PersistentVolume (PV) 및 PersistentVolumeClaim (PVC)

PersistentVolume(PV)과 PersistentVolumeClaim(PVC)은 쿠버네티스에서 영구 스토리지를 관리하기 위한 리소스입니다. 이 두 리소스는 Pod의 생명주기와 독립적으로 데이터를 유지할 수 있게 해줍니다.

주요 개념

특징

클라우드 네트워크 개념과 비교

PersistentVolume (PV) 예시

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-example
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: standard
  hostPath:  # 예시용 (프로덕션에서는 실제 스토리지 사용)
    path: /mnt/data

PersistentVolumeClaim (PVC) 예시

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-example
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
  storageClassName: standard

Pod에서 PVC 사용 예시

apiVersion: v1
kind: Pod
metadata:
  name: web-server
spec:
  containers:
  - name: web-server
    image: nginx
    volumeMounts:
    - mountPath: /usr/share/nginx/html
      name: web-data
  volumes:
  - name: web-data
    persistentVolumeClaim:
      claimName: pvc-example

StorageClass 예시 (AWS EBS 사용)

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: standard
provisioner: kubernetes.io/aws-ebs
parameters:
  type: gp2
  fsType: ext4
reclaimPolicy: Delete
allowVolumeExpansion: true

PV 생명 주기

스토리지 프로비저닝 방식

볼륨 확장

일부 스토리지 클래스는 볼륨 확장을 지원합니다:

# PVC의 storage 필드를 수정하여 용량 확장
spec:
  resources:
    requests:
      storage: 10Gi  # 5Gi에서 10Gi로 확장